package services;

import java.util.List;

import models.CalificacionPeriodo;
import models.Colegio;
import models.Curso;
import models.Indicador;
import models.Materia;
import util.Queries;

public class AcudienteSrv {

	public static List<Materia> getMateriasGrado(Long idGrado,
			Long idCalendarioAcademico) {

		return DAO.execute(Queries.getMateriasGrado(), -1, "idGrado", idGrado,
				"idCalendarioAcademico", idCalendarioAcademico);
	}

	public static List<CalificacionPeriodo> getCalificacionesCalendario(
			Long idEstudiante, Long idMateria, Long idPeriodo) {

		return DAO
				.execute(
						"SELECT cp FROM CalificacionPeriodo cp, Periodo p WHERE p.id=cp.idPeriodo AND p.calendarioAcademico.id=:idCalendarioAcademico AND cp.idMateria=:idMateria AND cp.idEstudiante=:idEstudiante",
						-1, "idEstudiante", idEstudiante,
						"idCalendarioAcademico", idPeriodo, "idMateria",
						idMateria);

	}

	public static Curso getCursoEstudiante(Long idEstudiante,
			Long idCalendarioAcademico) {
		Curso c = DAO
				.execute(
						"SELECT c FROM Curso c JOIN Matricula m ON m.idCurso=c.id WHERE m.idEstudiante=:idEstudiante AND m.idCalendarioAcademico=:idCalendarioAcademico",
						1, "idEstudiante", idEstudiante,
						"idCalendarioAcademico", idCalendarioAcademico);
		return c;
	}

	public static Colegio getColegioEstudiante(Long idEstudiante) {
		System.out.println(idEstudiante);
		Colegio c = DAO
				.execute(
						// TODO such a nasty bug! FROM Colegio col Join
						// Estudiante e, works, but inverse dont! WHY???
						"SELECT col FROM Colegio col, Estudiante e WHERE col.id=e.idColegio AND e.id=:idEstudiante",
						1, "idEstudiante", idEstudiante);
		return c;
	}

	public static List<Indicador> getIndicadoresPeriodo(Long idEstudiante,
			Long idMateria, Long idPeriodo) {

		return DAO
				.execute(
						"SELEC i FROM IndicadorEstudiantePeriodo iep JOIN Indicador i ON "
								+ "i.idMateria=iep.idMateria AND i.idPeriodo=iep.idPeriodo AND i.idGrado=iep.idGrado AND i.consecutivo=iep.consecutivoIndicador AND i.categoria=iep.categoriaIndicador "
								+ "WHERE iep.idMateria=:idMateria AND iep.idEstudiante=:idEstudiante AND iep.idPeriodo=:idPeriodo",
						-1, "idEstudiante", idEstudiante, "idMateria",
						idMateria, "idPeriodo", idPeriodo);
	}

}
